This invention relates to a decoding technique, where the receiver may receive multiple instances of the same transmitted signals.
In a data transmission or storage system, it is desirable for information, often grouped into packets, to be accurately received at a destination. A transmitter at or near the source sends the information provided by the source via a signal or signal vector. A receiver at or near the destination processes the signal sent by the transmitter. The medium, or media, between the transmitter and receiver, through which the information is sent, may corrupt the signal such that the receiver is unable to correctly reconstruct the transmitted information. Therefore, given a transmission medium, sufficient reliability is obtained through careful design of the transmitter and/or receiver, and of their respective components.
However, the transmitter may be unaware of how the channel will affect a transmitted signal, and may not be able to transmit information in a way that will be effective for a particular channel. For example, the transmitter may be a wireless router, where the channel varies depending on its surroundings. One technique to increase reliability when the transmitter does not have information about the channel is to increase the number of outputs (e.g., antennas) that the same information is transmitted. Thus, the same information may travel through multiple paths, allowing the receiver to more reliably estimate the transmitted information. This transmission technique is referred to as transmit diversity.
Even using transmit diversity, the receiver may still interpret the information incorrectly because of excessive channel effects and any additive noise that is independent of the channel. These errors may be corrected using an error correction scheme. To correct errors that may occur, redundancy is often added to a data stream. Therefore, when a reasonably small number of errors occur, there is still enough information to make an accurate determination of the transmitted sequence. The redundancy added to the data stream is determined based on an error correction code, such as a Reed-Solomon or Golay code.
One straightforward way to implement an error correction scheme is to use forward error correction (FEC). The transmitter encodes the data according to an error correction code and transmits the encoded information. Upon reception of the data, the receiver decodes the data using the same error correction code, ideally eliminating any errors. Therefore, “decoding” is hereinafter referred to as a method for producing an estimate of the transmitted sequence in any suitable form (e.g., a binary sequence, a sequence of probabilities, etc.)
Another way to implement a code for error correction is to use automatic repeat request (ARQ). Unlike FEC, ARQ schemes use error-detecting rather than error-correcting codes. The ARQ transmitter encodes data based on an error-detecting code, such as a cyclic redundancy check (CRC) code. After decoding the data based on the error-detecting code, if an error is detected, the receiver sends a request to the transmitter to retransmit that codeword. Thus, ARQ protocols require a forward channel for communication from transmitter to receiver and a back channel for communication from receiver to transmitter. Ultimately, the receiver will not accept a packet of data until there are no errors detected in the packet.
Finally, FEC and ARQ may be combined into what is known as hybrid automatic repeat request (HARQ). One type of HARQ, referred to as HARQ type-I, typically uses a code that is capable of both error-correction and error-detection. For example, a codeword may be constructed by first protecting the message with an error-detecting code, such as a CRC code, and then further encoding the CRC-protected message with an error-correcting code, such as a Reed-Solomon, Golay, convolutional, turbo, or low-density parity check (LDPC) code. When the receiver receives such a code, it first attempts FEC by decoding the error correction code. If, after error detection, there are still errors present, the receiver will request a retransmission of that packet. Otherwise, it accepts the received vector.
It may be beneficial for an ARQ or HARQ receiver to utilize data from multiple transmissions of a packet, because even packets that contain errors carry some amount of information about the transmitted packet. For situations when the transmitter is unaware of the channel characteristics, it may be beneficial to use a transmit diversity scheme with ARQ or HARQ to create an even more reliable system. However, it is not clear how information received in a system that combines transmit diversity and HARQ may be effectively decoded. Therefore, it would be desirable to provide a way to efficiently and accurately decode information received in a system with both transmit diversity and ARQ or HARQ.